/**
 * 字节对象转字符串
 * @param {Object} arr
 */
export const byteToString = function(arr) {
	if (typeof arr === 'string') {
		return arr;
	}

	var str = '',
		_arr = arr;

	for (var i = 0; i < _arr.length; i++) {
		var one = _arr[i].toString(2),
			v = one.match(/^1+?(?=0)/);

		if (v && one.length == 8) {
			var bytesLength = v[0].length;

			var store = _arr[i].toString(2).slice(7 - bytesLength);

			for (var st = 1; st < bytesLength; st++) {
				store += _arr[st + i].toString(2).slice(2);
			}

			str += String.fromCharCode(parseInt(store, 2));

			i += bytesLength - 1;
		} else {
			str += String.fromCharCode(_arr[i]);
		}
	}
	return str;
};

/**
 * 字符串转字节
 * @param {Object} str
 */
export const string2ArrayBuffer = function(str) {
	var bytes = new Array();
	var len, c;
	len = str.length;
	for (var i = 0; i < len; i++) {
		c = str.charCodeAt(i);
		if (c >= 0x010000 && c <= 0x10FFFF) {
			bytes.push(((c >> 18) & 0x07) | 0xF0);
			bytes.push(((c >> 12) & 0x3F) | 0x80);
			bytes.push(((c >> 6) & 0x3F) | 0x80);
			bytes.push((c & 0x3F) | 0x80);
		} else if (c >= 0x000800 && c <= 0x00FFFF) {
			bytes.push(((c >> 12) & 0x0F) | 0xE0);
			bytes.push(((c >> 6) & 0x3F) | 0x80);
			bytes.push((c & 0x3F) | 0x80);
		} else if (c >= 0x000080 && c <= 0x0007FF) {
			bytes.push(((c >> 6) & 0x1F) | 0xC0);
			bytes.push((c & 0x3F) | 0x80);
		} else {
			bytes.push(c & 0xFF);
		}
	}
	var array = new Int8Array(bytes.length);
	for (var i = 0; i <= bytes.length; i++) {
		array[i] = bytes[i];
	}
	return array.buffer;
};
/**
 * 格式化得到aid值
 * @param {Object} buffer
 */
export const ab2hex = function(buffer) {
	var hexArr = Array.prototype.map.call(
		new Uint8Array(buffer),

		function(bit) {
			return ('00' + bit.toString(16)).slice(-2);
		}
	);
	return hexArr.join('');
};

export function arrayBufferToString(buffer) {
	let encodedString = String.fromCodePoint.apply(null, new Uint8Array(buffer));
	let decodedString = decodeURIComponent(escape(encodedString)); //没有这一步中文会乱码
	console.log(decodedString);
	return decodedString
}